const CompressionWebpackPlugin = require('compression-webpack-plugin');
// 是否为生产环境
const isProduction = process.env.NODE_ENV !== 'development';
module.exports = {
  configureWebpack: (config) => {
    if (isProduction) {
      config.plugins = [
        ...config.plugins,
        new CompressionWebpackPlugin({
          // 正在匹配需要压缩的文件后缀
          test: /\.(js|css|svg|woff|ttf|json|html)$/,
          // 大于10kb的会压缩
          threshold: 10240,
        }),
      ];
    }

    config.resolve.alias = {
      ...config.resolve.alias,
      assets: '@/assets',
      style: '@/style',
      components: '@/components',
    };
  },
  publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          /*
           ** 移动端H5把px单位换算成rem单位， 换算的基数(设计图750的根字体为75),
           ** 大屏 16： 9 设计稿1920尺寸 换算的基数(设计图7根字体为16),
           ** 大屏 16： 9 设计稿3840尺寸 换算的基数(设计图7根字体为32),
           **/
          // require("postcss-pxtorem")({
          //   rootValue: 75,
          //   selectorBlackList: [".van"], // 要忽略的选择器并保留为px。
          //   propList: ["*"], //可以从px更改为rem的属性。
          //   minPixelValue: 2, // 设置要替换的最小像素值。
          // })
        ],
      },
    },
  },
  devServer: {
    proxy: {
      '/api': {
        target: '<url>',
        ws: true,
        changeOrigin: true,
      },
      '/foo': {
        target: '<other_url>',
      },
    },
  },
  pages: {
    index: {
      // pc page 的入口
      entry: 'src/main.js',
      // 模板来源
      template: 'public/index.html',
      // 在 dist/index.html 的输出
      filename: 'index.html',
      // 当使用 title 选项时，
      // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
      title: 'Index Page',
      // 在这个页面中包含的块，默认情况下会包含
      // 提取出来的通用 chunk 和 vendor chunk。
      chunks: ['chunk-vendors', 'chunk-common', 'index'],
    },
    h5: {
      // h5 page 的入口
      entry: 'src/h5.js',
      // 模板来源
      template: 'public/h5.html',
      // 在 dist/index.html 的输出
      filename: 'h5.html',
      // 当使用 title 选项时，
      // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
      title: 'h5 Page',
      // 在这个页面中包含的块，默认情况下会包含
      // 提取出来的通用 chunk 和 vendor chunk。
      chunks: ['chunk-vendors', 'chunk-common', 'h5'],
    },
    // 当使用只有入口的字符串格式时，
    // 模板会被推导为 `public/subpage.html`
    // 并且如果找不到的话，就回退到 `public/index.html`。
    // 输出文件名会被推导为 `subpage.html`。
    subpage: 'src/main.js',
  },
  productionSourceMap: false,
  // Solution For Issue:You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.
  // zhengkai.blog.csdn.net
  runtimeCompiler: true,
};
